/*
 * @Author: atao
 * @Date: 2023-11-13 19:49:37
 * @LastEditTime: 2023-12-13 19:55:11
 * @FilePath: \yayun-web000\src\router\interceptor.js
 */
import { JOIN_STR_CACHE, TOKEN_CACHE } from "@/config/common.config";
import store from "@/store";
import { decodeApi } from "@/utils";

/**
 * 1. 有些页面要拦截，有些页面不需要拦截
 * 2. 一般使用token做为拦截标志
 */
function interceptor(to, from, next) {
    if (to.meta.nologin) {
        next();
        return;
    }

    let token = sessionStorage.getItem(TOKEN_CACHE);
    if (!token) {
        next('/login');
        return;
    }
    /** 校验实效性，一般公司token过期时间：2h、30m */
    //解密切割token
    let str = decodeApi(token).split(JOIN_STR_CACHE);
    if (str.length !== 2) {
        sessionStorage.removeItem(TOKEN_CACHE);
        next('/login');
        return;
    }
    if (Date.now() - str[1] > 1680000) {
        sessionStorage.removeItem(TOKEN_CACHE);
        next('/login');
        return;
    }
    /** 从vuex里边取出token数据和session里边的token数据对比 */
    let _token = store.getters.token;
    if (_token !== str[0]) {
        // console.log(store) 测试路由跳转时的store
        sessionStorage.removeItem(TOKEN_CACHE);
        next('/login');
        return;
    }

    next();
}

export default interceptor;